package com.killer_jin.core.module.system.controller;

import com.killer_jin.core.common.constants.ControllerUrls;
import com.killer_jin.core.common.util.vo.Result;
import com.killer_jin.core.module.system.dto.UserDTO;
import com.killer_jin.core.module.system.service.UserService;
import io.swagger.annotations.Api;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.web.PageableDefault;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;

import java.awt.print.Pageable;
import java.util.ArrayList;
import java.util.List;

// @Component, @Service, @Controller, @Repository是spring注解，注解后可以被spring框架所扫描并注入到spring容器来进行管理
// @Component是通用注解，其他三个注解是这个注解的拓展，并且具有了特定的功能
// @Repository注解在持久层中，具有将数据库操作抛出的原生异常翻译转化为spring的持久层异常的功能。
// @Controller层是spring-mvc的注解，具有将请求进行转发，重定向的功能。
// @Service层是业务逻辑层注解，这个注解只是标注该类处于业务逻辑层。
// 用这些注解对应用进行分层之后，就能将请求处理，义务逻辑处理，数据库操作处理分离出来，为代码解耦，也方便了以后项目的维护和开发。
@Api(value = "XXX", description = "XXX", tags = "XXX")
@RestController
@RequestMapping(ControllerUrls.MANAGE_API_URI + "/user")
@Slf4j
public class UserController{
    private static List<UserDTO> userList = new ArrayList<>();

    @Autowired
    private UserService userService;


    @RequestMapping("/queryAll")
    public Result queryAll(){

        return Result.genSuccess("");
    }

    @RequestMapping(value = "/queryOne/{userId}", method = RequestMethod.GET)
    public Result queryOne(@PathVariable Long userId, @RequestParam(value = "activityId", required = false,
            defaultValue = "-1") Integer activityId, @PageableDefault(size = 20) Pageable pageable,
                           @Validated @RequestBody Integer test1){
        UserDTO user = null;
        for(UserDTO u : userList){
            if(u.getUserId().longValue() == userId){
                user = u;
            }
        }
        return Result.genSuccess("");
    }
}
